package Thread;


public class Syncaccount {
    private static boolean success1=false;
    private static boolean success2=false;
    public static void main(String[] args){
        Bank bank=new Bank();
        while (true){
            Thread t1= new Thread() {
                public void run() {
                    success1 = bank.getMoney(20000);
                }
            };
            Thread t2= new Thread() {
                public void run() {
                    success2 = bank.getMoney(20000);
                }
            };
            t1.start();
            t2.start();
            try{
                Thread.sleep(20);

            }catch(InterruptedException e){

            }
            if(success1&&success2){
                System.out.println("卡BUG成功！！！同时取款成功");
                break;
            }else{
                System.out.println("正常，只有一人取款成功");
                bank.saveAccount(20000);
                success1=success2=false;
            }

        }
    }
}



class Bank {
    private int account=20000;

    public boolean getMoney(int money){
        int account=getAccount();
        if(account>=money){
            account=account-money;
            Thread.yield();
            saveAccount(account);
            return true;
        }
        return false;
    }
    public void saveAccount(int account){
        this.account=account;
    }
    public int getAccount(){
        return account;
    }
}
